package com.ruoyi.visitor.domain;

import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 访客预约记录对象 visitor_appointment
 * 
 * @author ruoyi
 * @date 2025-04-12
 */
public class VisitorAppointment extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** id */
    @JsonFormat(shape  = JsonFormat.Shape.STRING)
    private Long id;

    /** 预约用户unionid */
    //@Excel(name = "预约用户unionid")
    private String unionid;

    /** 预约用户unionid */
    //@Excel(name = "预约用户openid",width = 30)
    private String openid;

    /** 访客姓名 */
    @Excel(name = "访客姓名")
    private String visitorName;

    /** 访客身份证号 */
    @Excel(name = "访客身份证号",width = 20)
    private String visitorIdcard;

    /** 访客身份证号 */
    @Excel(name = "访客电话号码")
    private String visitorPhone;

    /** 被访人身份证号 */
    //@Excel(name = "被访人身份证号")
    private String visitedIdcard;

    /** 被访人姓名 */
    //@Excel(name = "被访人姓名")
    private String visitedName;

    /** 被访人身份证号 */
    //@Excel(name = "被访人电话号码")
    private String visitedPhone;

    /** 访问部门 */
    @Excel(name = "访问部门")
    private String visitedDept;

    /** 预计到达时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    @Excel(name = "预计到达时间", width = 15, dateFormat = "yyyy-MM-dd HH:mm")
    private Date eta;

    @Excel(name = "访问天数")
    public Integer visitedDays;

    /** 预计离开时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    //@Excel(name = "预计离开时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date etd;

    /** 事由 */
    @Excel(name = "事由",width = 20)
    private String reason;

    @Excel(name = "车牌号",width = 20)
    private String carNum;

    /** 审批状态(P:待审批;A:已批准;R:已拒绝) */
    @Excel(name = "审批状态",dictType="approval_status")
    private String approvalStatus;


    /** 进入码 */
    @Excel(name = "进入码")
    private String enterCode;

    /** 离开码 */
    @Excel(name = "离开码")
    private String leaveCode;

    @Excel(name = "申请时间", width = 20, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date appointmentTime;

    /** modify_time */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date modifyTime;

    /** modify_by */
    private String modifyBy;

    //审批状态名称
    private String approvalStatusName;

    /**
     * 进入码-核验时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "核验时间", width = 20, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date enterCodeCheckTime;
    /**
     * 离开码-核销时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "核销时间", width = 20, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date leaveCodeCheckTime;

    private List<VisitorAppointmentStaff> staffList;

    public String getOpenid() {
        return openid;
    }

    public void setOpenid(String openid) {
        this.openid = openid;
    }

    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }

    public void setUnionid(String unionid) 
    {
        this.unionid = unionid;
    }

    public String getUnionid() 
    {
        return unionid;
    }

    public void setVisitorName(String visitorName) 
    {
        this.visitorName = visitorName;
    }

    public String getVisitorName() 
    {
        return visitorName;
    }

    public void setVisitorIdcard(String visitorIdcard) 
    {
        this.visitorIdcard = visitorIdcard;
    }

    public String getVisitorIdcard() 
    {
        return visitorIdcard;
    }

    public void setVisitedIdcard(String visitedIdcard) 
    {
        this.visitedIdcard = visitedIdcard;
    }

    public String getVisitedIdcard() 
    {
        return visitedIdcard;
    }

    public void setVisitedName(String visitedName) 
    {
        this.visitedName = visitedName;
    }

    public String getVisitedName() 
    {
        return visitedName;
    }

    public void setEta(Date eta) 
    {
        this.eta = eta;
    }

    public Date getEta() 
    {
        return eta;
    }

    public void setEtd(Date etd) 
    {
        this.etd = etd;
    }

    public Date getEtd() 
    {
        return etd;
    }

    public void setApprovalStatus(String approvalStatus) 
    {
        this.approvalStatus = approvalStatus;
    }

    public String getApprovalStatus() 
    {
        return approvalStatus;
    }

    public void setEnterCode(String enterCode) 
    {
        this.enterCode = enterCode;
    }

    public String getEnterCode() 
    {
        return enterCode;
    }

    public void setLeaveCode(String leaveCode) 
    {
        this.leaveCode = leaveCode;
    }

    public String getLeaveCode() 
    {
        return leaveCode;
    }

    public void setModifyTime(Date modifyTime) 
    {
        this.modifyTime = modifyTime;
    }

    public Date getModifyTime() 
    {
        return modifyTime;
    }

    public void setModifyBy(String modifyBy) 
    {
        this.modifyBy = modifyBy;
    }

    public String getModifyBy() 
    {
        return modifyBy;
    }

    public String getReason() {
        return reason;
    }

    public void setReason(String reason) {
        this.reason = reason;
    }

    public Date getAppointmentTime() {
        return appointmentTime;
    }

    public void setAppointmentTime(Date appointmentTime) {
        this.appointmentTime = appointmentTime;
    }

    public String getVisitorPhone() {
        return visitorPhone;
    }

    public void setVisitorPhone(String visitorPhone) {
        this.visitorPhone = visitorPhone;
    }

    public String getVisitedPhone() {
        return visitedPhone;
    }

    public void setVisitedPhone(String visitedPhone) {
        this.visitedPhone = visitedPhone;
    }

    public String getApprovalStatusName() {
        return approvalStatusName;
    }

    public void setApprovalStatusName(String approvalStatusName) {
        this.approvalStatusName = approvalStatusName;
    }

    public Date getEnterCodeCheckTime() {
        return enterCodeCheckTime;
    }

    public void setEnterCodeCheckTime(Date enterCodeCheckTime) {
        this.enterCodeCheckTime = enterCodeCheckTime;
    }

    public Date getLeaveCodeCheckTime() {
        return leaveCodeCheckTime;
    }

    public void setLeaveCodeCheckTime(Date leaveCodeCheckTime) {
        this.leaveCodeCheckTime = leaveCodeCheckTime;
    }

    public String getVisitedDept() {
        return visitedDept;
    }

    public void setVisitedDept(String visitedDept) {
        this.visitedDept = visitedDept;
    }

    public Integer getVisitedDays() {
        return visitedDays;
    }

    public void setVisitedDays(Integer visitedDays) {
        this.visitedDays = visitedDays;
    }

    public String getCarNum() {
        return carNum;
    }

    public void setCarNum(String carNum) {
        this.carNum = carNum;
    }

    public List<VisitorAppointmentStaff> getStaffList() {
        return staffList;
    }

    public void setStaffList(List<VisitorAppointmentStaff> staffList) {
        this.staffList = staffList;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("unionid", getUnionid())
            .append("visitorName", getVisitorName())
            .append("visitorIdcard", getVisitorIdcard())
            .append("visitedIdcard", getVisitedIdcard())
            .append("visitedName", getVisitedName())
            .append("eta", getEta())
            .append("etd", getEtd())
            .append("approvalStatus", getApprovalStatus())
            .append("enterCode", getEnterCode())
            .append("leaveCode", getLeaveCode())
            .append("createTime", getCreateTime())
            .append("createBy", getCreateBy())
            .append("modifyTime", getModifyTime())
            .append("modifyBy", getModifyBy())
            .append("remark", getRemark())
            .toString();
    }
}
